<?php
/*
===============================================================================
	Contiene todas aquellas funciones con relacion a Usuarios que nesesiten
	manipular registros de la tabla de usuarios en la base de datos.
===============================================================================
 */
class Usuarios_Model extends CI_Model
{
	const TABLA_USUARIOS = '_usuarios';

	/*
	====================
	ValidarUsuario

	Busca si existe un registro en la base de datos con el usuario y contrasena especificada.
	En dado caso de encontrar 1 registro, esta retorna 'verdadero' y 'falso' de lo contrario.
	====================
	*/
	function ValidarUsuario()
	{
		$usuario    = $this->input->post('usuario');
		$contrasena = $this->input->post('contrasena');
		$this->db->where('usuario', $usuario);
		$this->db->where('contrasena', MD5($contrasena));
		$query = $this->db->get(self::TABLA_USUARIOS);
		return ( $query->num_rows() == 1 ) ? TRUE : FALSE;
	}

	/*
	====================
	ObtenerTodos

	Consulta todos los registros de usuarios en la base de datos y los ordena por nombre de alumno
	acendiente.
	Retorna todos los registros.
	====================
	*/
	function ObtenerTodos()
	{
		DEFINE( 'USUARIOS_POR_PAGINA' , 10 );
		$this->db->order_by( "usuario" , "asc" );
		$res = $this->db->get(self::TABLA_USUARIOS , USUARIOS_POR_PAGINA , $this->uri->segment(3) );
		if ( $res->num_rows() > 0 ) {
			foreach ( $res->result() as $registro ) {
				$todosRegistros[] = $registro;
			}
		}
		return $todosRegistros;
	}

	/*
	====================
	BuscarPorMatricula

	Busca el registro mediante la matricula especificada y retorna todos los campos del registro.
	====================
	*/
	function BuscarPorUsuario($usuario)
	{
		$this->db->where('usuario',$usuario);
		$res = $this->db->get(self::TABLA_USUARIOS);
		if( $res->num_rows() > 0 ){
			foreach ( $res->result() as $fila ) {
				$registro[] = $fila;
			}
			return $registro;
		}
	}

	/*
	====================
	AgregarRegistrosUsuarios

	Inserta las datos del arreglo asociado en la tabla de usuarios (Ignora repetidos).
	====================
	*/
	function AgregarRegistrosUsuarios($arregloDatos)
	{
		$insert_query = $this->db->insert_string(self::TABLA_USUARIOS, $arregloDatos);
    	$insert_query = str_replace('INSERT INTO', 'INSERT IGNORE INTO', $insert_query);
    	$this->db->query($insert_query);
    	return $this->db->affected_rows();
	}

/*
	====================
	ActualizarRegistroUsuario

	Actualiza la contrasena del registro con el usuario especificada.
	====================
	*/
	function ActualizarRegistroUsuario($usuario, $contrasena)
	{
		$query = "UPDATE " . self::TABLA_USUARIOS . " SET contrasena = ? WHERE usuario = ?";
		$this->db->query($query,array($contrasena,$usuario));
		return $this->db->affected_rows();
	}

	/*
	====================
	EliminarRegistro

	Elimina el registro donde coincide con la matricula especificada.
	Retorna la cantidad de filas afectadas
	0 - Fallo
	1 - Exito
	====================
	*/
	function EliminarRegistro($usuario)
	{
		$query = "DELETE FROM " . self:: TABLA_USUARIOS . " WHERE usuario = ?";
		$this->db->query($query,$usuario);
		return $this->db->affected_rows();
	}

	/*
	====================
	ContarRegistros

	Retorna la cantidad total de registros existentes de usuarios.
	====================
	*/
	function ContarRegistros()
	{
		$totalRegistros = $this->db->count_all(self::TABLA_USUARIOS);
		return $totalRegistros;
	}
}
?>